胎嘎侯~
生活中註冊某些網站會員時,有些會要求進行郵件驗證(Email Verification),怕用戶填錯email,尤其當主要的登入欄位是email時,再者是忘記密碼等情形下,郵件驗證可以減少問題的發生;此外,也是為了防止簡單的機器人,經過驗證的電子郵件可以防止濫用行為,維持網站與真正用戶緊密的關係。
今天參考官方的Email Verification文件內容,一起進行簡單的郵件驗證實作吧!
前置作業:請先將您的.env
檔連上DB & 快速生成含註冊與登入的頁面
跟著官方文件
1.打開User.php
檔案,檢查有沒有Illuminate \ Contracts \ Auth \ MustVerifyEmail
2.將extends後面改成與文件相同,加上implements MustVerifyEmail
。這邊的implements是實現interface的方式。
3.確認users table的Schema裡有沒有email_verified_at(框架預設)
,執行php artisan migrate
生成資料表,到DB查看是否存在欄位名稱。
4.將文件上的Auth::routes(['verify' => true]);
加到web.php
。
5.下一個是Protecting Routes,將下列受middleware保護的入由加到web.php
。
Route::get('profile', function () {
return "my email";
})->middleware('verified');
由於verified這個middleware已經在Kernel中定義,所以我們可以直接使用它。
6.要能讓email驗證就必須一個mail server來實現,查看.env
檔會發現Laravel預設默認的是mailtrap,請先申請會員。
7.申請完成後,進入.env
檔修改mailtrap顯示的配置訊息
8.註冊一個帳號,輸入http://127.0.0.1:8000/profile
如看到下圖,代表離成功不遠。
此時觀察我們DB的情形,由於email尚未驗證,所以為null。
9.重回mailtrap,看到左欄有新信,就是剛剛Laravel幫我們發出的郵件驗證信件。
10.按下Verify Email Address
後,會跳轉回成功登入頁面。
11.再回到http://127.0.0.1:8000/profile
看看,頁面出現當初路由寫的return的 my email。
12.最後!回到DB查看email_verified_at
的狀況。
今天手把手的簡單email驗證就到這裡,週末見!